package com.cy.commom.pojo;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/** 借助此对象在业务逻辑层封装分页信息
 *  序列化应用场景：
 *  1）将对象转换为字节以后缓存到内存
 *  2）将内存中的对象存储到文件
 *  3）将对象转换为字节在网络中加密传输
 *   序列化对象设计规范：
 *   1）实现序列化接口
 *   2）添加序列化ID
 * */
@Data
public class PageObject<T> implements Serializable {
    private static final long serialVersionUID = 5888907596249389886L;//当泛型在类上或接口名右侧时，这种泛型叫类泛型

    /** 总记录数 */
    private Integer rowCount;
    /** 当前页记录数 */
    private List<T> records;
    /** 总页数 */
    private Integer pageCount;
    /** 每页显示的记录数 */
    private Integer pageSize;
    /** 记录当前页的页码值 */
    private Integer pageCurrent;

    public PageObject(){};

    public PageObject(List<T> records, Integer rowCount, Integer PageSize, Integer pageCurrent){
        this.records= records;
        this.rowCount=rowCount;
        this.pageCurrent=pageCurrent;
        this.pageSize=PageSize;
//		this.pageCount=rowCount/pageSize;
//		if(rowCount%pageSize!=0) {//如果不是基数哪页码数加1
//			pageCount++;
//		}
        this.pageCount=(rowCount-1)/pageSize+1;
    }

    public PageObject(Integer rowCount, List<T> records, Integer pageCount, Integer pageSize, Integer pageCurrent) {
        this.rowCount = rowCount;
        this.records = records;
        this.pageCount = pageCount;
        this.pageSize = pageSize;
        this.pageCurrent = pageCurrent;
    }
}
